<?php
/**** 以下是需要在模板中应用的取Blog相关内容的函数 ****/
//获取post_type=page的标题数组
function getPages()
{
	$pages = S("pages");
	if(!$pages)
	{
		$pageDao = D("Posts");
		$pages = $pageDao->field("ID,post_name,post_title")->where("post_type='page' AND post_status='publish'")->order("post_date asc")->findAll();
		S("pages",$pages);
	}
	
	return $pages;
}

//给定post数组,生成打开日志的链接,如果post_name不为空,生成SEO优化的链接
function blogurl($post)
{
	if(empty($post['post_name']))
		return url($post['ID'],'Blog');
	else
		return __APP__."/".Input::forTag($post['post_name']).C("HTML_URL_SUFFIX");
}

//日志列表中如果出现了分割符,不要进行全文输出,只输出到分符符为止
function replaceSeparator($content,$postId)
{
	if(stristr($content,"<p>[separator]</p>"))
	{
		$content = substr($content,0,stripos($content,"<p>[separator]</p>")+strlen("<p>[separator]</p>"));
		return str_ireplace("<p>[separator]</p>","<p><b><a href=\"".url($postId,"Blog")."\">阅读全部内容… </a></b></p>",$content);
	}
	else
		return $content;
}

//二级数组按特定元素排序
function Array_sort_by_field($arr_data, $field, $istime = false, $descending = false)
{
    $arrSort = array();
    foreach ( $arr_data as $key => $value ) {
        $arrSort[$key] = $istime==true?strtotime($value[$field]):$value[$field];
    }

    if( $descending ) {
        arsort($arrSort);
    } else {
        asort($arrSort);
    }

    $resultArr = array();
    foreach ($arrSort as $key => $value ) {
        $resultArr[$key] = $arr_data[$key];
    }

    return $resultArr;
}

//识别汉字编码,因为YBlog用的是utf-8,如果引用通告发过来的是gb2312的编码的话,需要可以识别并完成编码转换
function safeEncoding($string,$outEncoding = 'UTF-8')
{
	$encoding = "UTF-8";
	for($i=0;$i<strlen($string);$i++)
	{
		if(ord($string{$i})<128)
			continue;

		if((ord($string{$i})&224)==224)
		{
			//第一个字节判断通过
			$char = $string{++$i};
			if((ord($char)&128)==128)
			{
				//第二个字节判断通过
				$char = $string{++$i};
				if((ord($char)&128)==128)
				{
					$encoding = "UTF-8";
					break;
				}
			}
		}
		if((ord($string{$i})&192)==192)
		{
			//第一个字节判断通过
			$char = $string{++$i};
			if((ord($char)&128)==128)
			{
				//第二个字节判断通过
				$encoding = "GB2312";
				break;
			}
		}
	}
	
	if(strtoupper($encoding) == strtoupper($outEncoding))
		return $string;
	else
		return iconv($encoding,$outEncoding,$string);
}
?>